package practice1_100;

public class Practice26 {
    public int removeDuplicates(int[] nums) {
        //记录上一个数字[1,1,2,2,3,3,4,4,4,4,4,4,5,6,6,7,7,8]，eg：当前nums[2]=5，此时i=4
        int i=Integer.MAX_VALUE;
        //记录第一次出现该数的下标的后面
        int index =0;
        for (int j=0;j<nums.length;j++) {
            if (i!=nums[j]){
                //记录上一个数字[1,1,2,2,3,3,4,4,4,4,4,4,5,6,6,7,7,8]，eg：当前nums[2]=5，此时i=4
                i=nums[j];
                //不重复的数添置到index 的位置
                nums[index]=nums[j];
                index++;
            }
        }
        return index;
    }

    public int removeDuplicates1(int[] nums) {
        if(nums.length<=1) return nums.length;
        int slow=0,fast=1,len= nums.length;
        while (fast<=len-1) {
            if(nums[slow]==nums[fast]){
                fast++;
            }else {
                slow++;
                nums[slow]=nums[fast];
                fast++;
            }
        }
        return ++slow;
    }

    public static void main(String[] args) {
        int a=new Practice26().removeDuplicates1(new int[]{1,1,3});
        System.out.println(a);
    }
}
